//package cn.iocoder.yudao.module.book.controller.app.users;
//
//
//import cn.iocoder.yudao.framework.common.pojo.CommonResult;
//import cn.iocoder.yudao.module.book.controller.app.users.vo.UserInfoVO;
//import cn.iocoder.yudao.module.book.dal.dataobject.users.userDTODO;
//import cn.iocoder.yudao.module.book.service.users.userDTOService;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//
//@RestController
//@RequestMapping("/user/my")
//public class AppusersController {
//
//
//    @Resource
//    private userDTOService userService;
//
//    @GetMapping("/info")
//    public CommonResult<UserInfoVO> getUserInfo() {
//        Long userId = userService.getCurrentUserId(); // 从 Token 中解析用户
//        System.out.println(userId);
//        userDTODO user = userService.getuserDTO(userId);
//        return CommonResult.success(UserInfoVO.builder()
//                .nickname(user.getNickname())
//                .avatarUrl(user.getAvatarUrl())
//                .build());
//    }
//}
package cn.iocoder.yudao.module.book.controller.app.users;


import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.book.controller.app.users.vo.UserInfoVO;
import cn.iocoder.yudao.module.book.dal.dataobject.users.userDTODO;
import cn.iocoder.yudao.module.book.service.users.userDTOService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import cn.iocoder.yudao.module.book.constants.UserConstants;

@Slf4j
@RestController
@RequestMapping("/api/user/my")
public class AppusersController {


    @Resource
    private userDTOService userService;

    @GetMapping("/info")
    public CommonResult<UserInfoVO> getUserInfo() {
        Long userId = getLoginUserId(); // 直接使用框架提供的方法
        log.info("userId:{}", userId);
        userDTODO user = userService.getuserDTO(userId);
        return CommonResult.success(UserInfoVO.builder()
                .id(user.getUserId())
                .nickName(user.getNickname())
                .avatar(user.getAvatarUrl() != null ? user.getAvatarUrl() : UserConstants.DEFAULT_AVATAR_URL)
                .phone(user.getMobile())
                .build());
    }

    @PostMapping("/update")
    public CommonResult<Boolean> updateMyInfo(@RequestBody @javax.validation.Valid cn.iocoder.yudao.module.book.controller.app.users.vo.AppUserProfileUpdateReqVO req) {
        Long userId = getLoginUserId();
        userService.updateMyProfile(userId, req.getNickName(), req.getAvatar(), req.getPhone());
        return CommonResult.success(true);
    }

    @PostMapping("/deactivate")
    public CommonResult<Boolean> deactivateAccount() {
        Long userId = getLoginUserId();
        log.info("用户 {} 申请永久删除账户", userId);
        userService.deactivateUser(userId);
        log.info("用户 {} 及其所有相关数据已永久删除", userId);
        return CommonResult.success(true);
    }

    // 添加这个方法
    private Long getLoginUserId() {
        return SecurityFrameworkUtils.getLoginUserId();
    }




}
